package com.ceair.mongodb;

import com.ceair.entity.MongoChatMemory;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.data.mongodb.repository.Update;
import org.springframework.stereotype.Repository;

/**
 * @author wangbaohai
 * @ClassName MongoChatMemoryStore
 * @description: 会话记忆存储读写工具
 * @date 2025年05月18日
 * @version: 1.0.0
 */
@Repository
public interface MongoChatMemoryStoreRepository extends MongoRepository<MongoChatMemory, String> {

    /**
     * 根据 memoryId 更新消息内容
     * 此方法使用 MongoDB 的 @Query 注解来定位文档，然后使用 @Update 注解来更新文档中的 content 字段
     * 这种方法确保了只更新匹配 memoryId 的文档的内容，而不会影响其他文档
     *
     * @param memoryId 消息的唯一标识符，用于定位要更新的消息
     * @param content  新的消息内容，用于替换旧的内容
     */
    @Query("{ 'memoryId' : ?0}")
    @Update("{ '$set' : { 'content' : ?1 } }")
    void updateMessagesByMemoryId(int memoryId, String content);


    /**
     * 根据memoryId删除特定的项
     * 此方法用于从数据库或数据结构中删除与给定memoryId关联的项
     *
     * @param memoryId 需要删除的项的ID
     */
    void deleteByMemoryId(int memoryId);

}
